交互式文档 (Shiny) 教程
1. 概述
Shiny 是 R 语言的一个包,用于创建交互式网页应用程序。这些应用程序可以用于数据可视化、数据分析、报告生成等多种用途。Shiny 应用程序通常由两个主要部分组成:用户界面 (UI) 和 服务器逻辑 (Server)。
1.1 为什么使用 Shiny?
- 交互性:用户可以通过网页界面与数据进行交互。
- 易用性:无需前端开发经验,只需 R 语言基础即可创建复杂的网页应用。
- 集成性:可以轻松集成 R 中的各种数据分析和可视化工具。
2. 安装 Shiny
在开始之前,确保你已经安装了 R 和 RStudio。然后,使用以下命令安装 Shiny 包:
install.packages("shiny")
安装完成后,加载 Shiny 包:
library(shiny)
3. 创建第一个 Shiny 应用程序
3.1 基本结构
一个 Shiny 应用程序由两个主要部分组成:
- UI (用户界面):定义应用程序的外观和布局。
- Server (服务器逻辑):处理数据和生成输出。
3.2 示例代码
以下是一个简单的 Shiny 应用程序示例:
# ui.R
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
sliderInput("obs", "Number of observations:", min = 0, max = 100, value = 50)
),
mainPanel(
plotOutput("distPlot")
)
)
)
# server.R
server <- function(input, output) {
output$distPlot <- renderPlot({
hist(rnorm(input$obs), col = 'darkgray', border = 'white')
})
}
# 运行应用程序
shinyApp(ui = ui, server = server)
3.3 代码解释
-
UI 部分:
fluidPage:创建一个响应式布局。titlePanel:设置应用程序的标题。sidebarLayout:创建一个侧边栏布局。sliderInput:添加一个滑块输入控件。plotOutput:定义一个用于显示图形的区域。
-
Server 部分:
function(input, output):定义服务器逻辑。renderPlot:生成一个图形输出。hist:绘制直方图。
3.4 运行应用程序
将上述代码保存为 app.R 文件,然后在 RStudio 中点击“Run App”按钮,即可运行应用程序。
4. 实践练习
4.1 练习 1:修改滑块范围
修改滑块的范围,使其最小值为 10,最大值为 200。
4.2 练习 2:添加文本输出
在主面板中添加一个文本输出,显示滑块的当前值。
4.3 练习 3:自定义图形
修改直方图的样式,例如改变颜色或添加标题。
5. 进阶功能
5.1 添加更多输入控件
Shiny 提供了多种输入控件,如 textInput、selectInput、dateInput 等。你可以根据需要添加这些控件。
ui <- fluidPage(
titlePanel("Shiny 进阶"),
sidebarLayout(
sidebarPanel(
sliderInput("obs", "Number of observations:", min = 0, max = 100, value = 50),
textInput("title", "Plot title:", "Histogram of Random Data"),
selectInput("color", "Plot color:", choices = c("darkgray", "blue", "red"))
),
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
hist(rnorm(input$obs), col = input$color, border = 'white', main = input$title)
})
}
shinyApp(ui = ui, server = server)
5.2 动态更新输出
你可以使用 reactive 函数来动态更新输出。例如,根据用户输入的数据生成不同的图形。
server <- function(input, output) {
data <- reactive({
rnorm(input$obs)
})
output$distPlot <- renderPlot({
hist(data(), col = input$color, border = 'white', main = input$title)
})
}
6. 部署 Shiny 应用程序
6.1 本地部署
在 RStudio 中运行 shinyApp 函数即可在本地运行应用程序。
6.2 在线部署
你可以将 Shiny 应用程序部署到 ShinyApps.io 或其他支持 Shiny 的服务器上。
- 注册 ShinyApps.io 账户。
- 安装
rsconnect包:
install.packages("rsconnect")
- 配置账户:
rsconnect::setAccountInfo(name='yourname', token='yourtoken', secret='yoursecret')
- 部署应用程序:
rsconnect::deployApp('path/to/your/app')
7. 总结
Shiny 是一个强大的工具,可以帮助你快速创建交互式网页应用程序。通过本教程,你已经学会了如何创建一个简单的 Shiny 应用程序,并了解了如何添加输入控件和动态更新输出。希望你能继续探索 Shiny 的更多功能,并将其应用于实际项目中。
8. 参考资料
通过这些资源,你可以进一步学习和掌握 Shiny 的高级功能。